package cn.wsw.hrm.service.impl;

import cn.wsw.hrm.client.PageConfigClient;
import cn.wsw.hrm.client.RedisClient;
import cn.wsw.hrm.domain.CourseType;
import cn.wsw.hrm.mapper.CourseTypeMapper;
import cn.wsw.hrm.service.ICourseTypeService;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * <p>
 * 课程目录 服务实现类
 * </p>
 *
 * @author wsw
 * @since 2020-02-20
 */
@Service("courseTypeService")
public class CourseTypeServiceImpl extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {

    @Autowired
    private RedisClient redisClient;
    @Autowired
    private PageConfigClient pageConfigClient;
    @Autowired
    private CourseTypeMapper courseTypeMapper;
    @Override
    public void pageInit() {
        //约定大于配置。先写死，属于pager表的name
        String pageName = "CourseSiteIndex";
        //需要写入page_config表
        String datakey = "CourseSiteIndex_data";
        //获取菜单
        List<CourseType> courseTypes = this.treeData(0L);
        //处理课程类型数据
        Map<String, Object> courseTypsdata = new HashMap<>();
        courseTypsdata.put("coursetype",courseTypes);

        redisClient.add(datakey, JSONArray.toJSONString(courseTypsdata));
        //调用方法模板+数据=静态页面
        pageConfigClient.staticPage(pageName,datakey);
    }

    /**
     * 面包屑
     * @param courseTypeId
     * @return
     */
    @Override
    public List<Map<String, Object>> queryCrumbs(Long courseTypeId) {
        List<Map<String,Object>> result = new ArrayList<>();
        //获取对应courseTypeId的path，数组
        String path = courseTypeMapper.selectById(courseTypeId).getPath();
        path = path.substring(1,path.length()-1);
        String[] paths = path.split("\\.");//[1037,1039,1040]
        //2 对每个节点进行处理 Map
        for (String idStr : paths) {
            // idStr：1039
            Map<String,Object> node = new HashMap<>();
            //2.1 自己  id为1039的数据
            CourseType owerCourseType = courseTypeMapper.selectById(Long.valueOf(idStr));
            node.put("ownerCourseType",owerCourseType);
            //2.2 兄弟
            //2.1.1 获取父亲的所有儿子   1039的pid为1037
            Long pid = owerCourseType.getPid();
            //通过查询pid为1037的所有数据[1039,1041,1042]
            List<CourseType> allChirdren = courseTypeMapper
                    .selectList(new EntityWrapper<CourseType>().eq("pid", pid));
            //2.1.2 删除自己
//            for (CourseType courseType : allChirdren) {
//
//            }
            Iterator<CourseType> iterator = allChirdren.iterator();
                while (iterator.hasNext()){
                    //1039
                CourseType type = iterator.next();
                //自己id为遍历出来的id
                if (owerCourseType.getId().intValue()==type.getId().intValue()){
                    iterator.remove();
                    break;
                }
            }
            node.put("otherCourseTypes",allChirdren);
            result.add(node);
        }

        return result;
    }

    @Override
    public List<CourseType> treeData(long pid) {
        return null;
    }
}
